home *** CD-ROM | disk | FTP | other *** search
/ Power CD / Power CD ATARI-Rechner Lieben.iso / UTILITY / MAKE / MAKE_ONE.MKE next >
Encoding:
Text File  |  1992-08-02  |  2.1 KB  |  63 lines

  1. warn_ver 201
  2. #
  3. # Make-Prozedur für ein Ein-Modul-Programm. Es darf eine .h-Datei des
  4. # gleichen Namens existieren, muß aber nicht. Wird ein Parameter übergeben,
  5. # dann ist dies der Name des C-Moduls, sonst wird derjenige dieser Prozedur
  6. # verwendet. Man braucht ihr also immer nur den Namen des C-Programms zu
  7. # geben, und alles ist in Ordnung.
  8. #
  9. # Die verwendeten Pfade und Optionen müssen natürlich erst angepaßt werden
  10. #
  11. let cc$ = "\usr\bin\cc.prg"
  12. let cl$ = "\usr\bin\cl.prg"
  13. let prog_art$ = "prg"; # stets verwendete Dateiendung des fertigen Programms
  14. let cc_options$ = "-xyz -i=\usr\include"
  15. let cl_options$ = "-xyz -o=programm$"
  16. let library$ = "float.lib std.lib tos.lib"
  17.  
  18. let programm$ = 'argv$[argc==1]'
  19. let quelle$   = 'programm$'
  20. let object$   = 'programm$'
  21. let include$  = 'programm$'
  22.  
  23. chg_ext quelle$,   "c";        # ergibt den Quelltextnamen
  24. chg_ext object$,   "o";        # ergibt den Namen des Linkmoduls
  25. chg_ext include$,  "h";        # ergibt den Namen der evtl. Includedatei
  26. chg_ext programm$, 'prog_art$';# ergibt den Namen der ausführbaren Datei
  27.  
  28. # nun geht es ans Übersetzen
  29.  
  30. while istomake(object$: quelle$, include$)
  31.    putc "cc.prg ", cc_options$, " ", quelle$.
  32.    del c_err
  33.    out_to c_err
  34.    cc$ cc_options$ quelle$
  35.    out_to stdout
  36.    if RC; # Fehler: Editor starten
  37.       ed.prg c_err quelle$
  38.       exit RC; # Prozedurabbruch vom Editor mittels Returncode != 0
  39.    endif
  40. again
  41.  
  42. # jetzt noch zusammenbinden
  43.  
  44. if istomake(programm$: object$)
  45.    putc "cl.prg -o=", programm$, " -s=", stacksize, object$, " ", library$.
  46.  
  47.    cl$ {cl_options$} object$ library$
  48.    # Dank der geschweiften Klammern wird innerhalb von cl_options noch die
  49.    # enthaltene Variable programm$ richtig expandiert.
  50.  
  51.    if RC;                   # Link-Fehler: Ausgabe anhalten, damit man die
  52.       putc "eine Taste zum Fortfahren". 
  53.       gosub getchar();      # Meldung des Linkers lesen kann
  54.       del programm$;        # sonst können fehlerhafte Programme erzeugt werden
  55.    else
  56.       putc programm$, " wurde erzeugt".
  57.    endif
  58. else
  59.    putc programm$, " ist auf dem aktuellen Stand!".
  60.    gosub getchar()
  61. endif
  62. end.
  63.